# -*-coding:utf-8-*-
from fastapi import APIRouter
from pydantic import BaseModel

from api.api_bot_utils import send_public_v36
from common_util.config import *
from api import api_bot_utils
import re

router = APIRouter()

# 创建了个实体类，方便解析微信消息
class WechatDto(BaseModel):
    msg: str = None  # 消息内容
    tag: int = None  # 消息类型，例如：0表示发送文字，1表示发送图片等
    finalFromWxid: str = None  # 如果是群消息，发送消息的人的微信ID
    finalFromNick: str = None  # 如果是群消息，发送消息的人的微信ID
    fromWxid: str = None  # 发送消息的人的微信ID，如果是好友则为好友的wxid
    fromNick: str = None  # 发送消息的人的昵称，如果是好友则为好友的昵称
    memberCount: int = None  # 如果是群消息，群成员的数量；如果是好友消息则为空
    time: str = None  # 发送时间
    msgSource: int = None  # 发送消息的来源，0表示别人发送，1表示自己发送
    atList: list = []  # 艾特的人列表，通常是一个包含微信ID的列表

    # 创建get方法
    def get(self, param):
        return getattr(self, param)


# 微信机器人自定义接口（可以在页面上配置此接口）
@router.post("/receive_message")
def receive_message(wechat: WechatDto):
    # 获取消息
    msg = wechat.msg
    # 获取用户
    finalFromWxid = wechat.finalFromWxid
    # 获取需要发送的群
    fromWxid = wechat.fromWxid
    finalFromNick = wechat.finalFromNick
    user_nick_list = [finalFromNick]
    user_name_list = [finalFromWxid]
    result = ''
    if msg.find("小爱：") != -1:
        result = xiaoai(msg, fromWxid, finalFromWxid, user_nick_list, user_name_list)
    elif msg.find("导购：") != -1:
        result = jiadian(msg, fromWxid, user_nick_list, user_name_list)
    return result



# 发送文本消息案例(艾特全体成员)
@router.get("/send_text")
async def send_text():
    user_nick_list = ['all']
    user_name_list = ['notify@all']
    body = api_bot_utils.send_public_v37(WECHAT_ROBOT_WXID, 0, WECHAT_APPKEY, "大家下午好~", user_nick_list,
                                         user_name_list)
    return body




# 京东家电
def jiadian(msg, fromWxid, user_nick_list, user_name_list):
    msg = msg.replace("导购：", '')
    result = ""
    # 定义一个正则表达式来匹配以常见图片格式结尾的URL
    # 常见的图片格式包括: .png, .jpg, .jpeg, .gif, .bmp, .tiff
    image_url_pattern = re.compile(r'https?://[^\s]+.(jpg|jpeg|png|gif|bmp|tiff)')
    # 遍历集合中的每个元素
    for item in result:
        # 使用正则表达式查找图片URL
        image_urls = image_url_pattern.findall(item)
        # 如果找到图片URL，处理图片
        if image_urls:
            # 清理URL，去除前后的引号和空格
            image_url = item.strip(' "\'')
            print(f"处理图片: {image_url}")
            body = api_bot_utils.send_public_v36(fromWxid, 1, WECHAT_APPKEY,
                                                 image_url,
                                                 False, [])
        else:
            # 如果没有图片URL，检查是否包含普通文本
            # 清理文本，去除前后的空格
            text = item.strip().replace('\n', '\r').replace('*', '')
            if text:
                print(f"处理文本: {text}")
            body = api_bot_utils.send_public_v37(fromWxid, 0, WECHAT_APPKEY, text, user_nick_list,
                                                 user_name_list)
    return "success"


# 小爱同学（其实是网页版的kimi）
def xiaoai(msg, fromWxid, finalFromWxid, user_nick_list, user_name_list):
    msg = msg.replace("小爱：", '')
    if '你是谁' in msg:
        return "我是雄雄开发的小爱同学呀！！！"
    result = ""
    # 处理一下result的值
    result = result.replace('\n', '\r').replace('*', '')
    print(result)
    content = f"小爱同学为您回答：{result}"
    # 调用发送文本消息的接口发送消息
    body = api_bot_utils.send_public_v37(fromWxid, 0, WECHAT_APPKEY, content, user_nick_list, user_name_list)
    return "success"
